﻿
using System;

namespace HmFramework.Threading
{

	/// <summary>  
	/// 销毁帮手，生成可以支持using的自定义IDisposable实例
	/// <remarks>感谢网友@doggo对于 +=OnDispose功能的測試，由於不完善這裡決定取消該功能</remarks>
	/// </summary>  
	public struct Disposable : IDisposable
	{

		/// <summary>  
		/// 创建销毁帮手实例  
		/// </summary>  
		/// <param name="onCreate">创建时要做的操作</param>  
		/// <param name="onDispose">销毁是要做的操作</param>  
		public Disposable(Action onCreate, Action onDispose)
			: this()
		{
			OnDispose = onDispose;
			onCreate();
		}

		/// <summary>  
		/// 销毁时要做的操作
		/// </summary>  
		private Action OnDispose
		{
			get;
			set;
		}

		////// <summary>  
		////// 销毁时要做的操作  支持+=/Addhandler附加操作 （撤銷）  
		////// </summary>  
		//////public event Action OnDispose ;
		#region -- IDisposable 成员 --

		void IDisposable.Dispose()
		{
			OnDispose();
			OnDispose = null;
		}

		#endregion

	}
}
